/**
 * EventServer 的字符串操作方法集合
 */
#pragma once

#include "EventType.h"

/* 字符串对象 */
typedef struct _EventString EventString;
#define EVENT_STRING(any) ((EventString *)any)

/**
 * 创建一个字符串对象
 */
extern EventString *event_string_new(const char *);

/**
 * 根据字符串大小和 raw 数据创建一个字符串
 */
extern EventString *event_string_new_with_size(const epointer raw, int size);

/**
 * 获取字符串对象的内容，请使用简化的宏 ES_GET(EventString *)
 */
extern const char *event_string_get_string(const EventString *self);
#define ES_GET(EventStringObject) (event_string_get_string(EventStringObject))

/**
 * 获取字符串对象长度
 */
extern int event_string_get_length(const EventString *self);

/**
 * 比较两个字符串对象
 */
extern bool event_string_compare(const EventString *str1,
				 const EventString *str2);

/**
 * 在字符串末尾添加子串
 */
extern void event_string_append(EventString *self, const char *child_str);

/**
 * 拷贝添加子串，返回一个新的字符串对象。
 */
extern EventString *event_string_copy_append(EventString *self,
					     const char	 *child_str);
